﻿/*
Ve*e + Vf*f + Vg*g + Vh*h < 9.084 * 3;
e<3*(f+h);
e+f+g+h<=8000;
e<6500;
f<5000;
g<4000;
h<3000;
解线性不等式组
*/
#include<stdio.h>
#include<stdlib.h>
#define Ve 0.0012
#define Vf 0.0015
#define Vg 0.0003
#define Vh 0.0008
int main()
{
	float W=0,Z;
	for (int e = 0; e < 6500; e++)
	{
		printf("%d", e);
		for (int f = 0; f < 5000; f++)
		{
			for (int g = 0; g < 2667; g++)//因为f+h最多才8000，g最多8000/3
			{
				for (int h = 0; h < 3000; h++)
				{
					if (Ve*e + Vf*f + Vg*g + Vh*h < 9.084 * 3&&e<3*(f+h))
						Z = 1.7f*e + 2.25f*f + 4.5f*g + 1.12f*h;
					else
						break;//继续h++的话后面都不满足 所以跳出循环
					if (Z > W)
					{
						W = Z;//找出较大的值 并赋给W
						printf("%d %d %d %d\t", e, f, g, h);//监控循环过程
						printf("%.2f\n", W);//结果,两位小数
					}
				}
			}
		}
	}
	system("pause");//按任意键结束
	return 0;
}
//这是穷举法。这个计算速度，很难算出结果。matlab上有更高级的算法
